﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

using AdminCondominio.Dominio;
using AdminCondominio.Persistencia;

namespace AdminCondominio.Negocio
{
    public class SeparacionAreaComunService
    {
         
        public ResidenteDAO residenteDAO { get; set; }
        public AreaComunDAO areacomunDAO { get; set; }
        public SeparacionAreaComunDAO separacionareacomunDAO { get; set; }

        public SeparacionAreaComun RegistrarSeparacionAreaComun(SeparacionAreaComun data)
        {
         
            Residente residente = residenteDAO.obtenerX_Codigo(data.Residente.CoResidente);
            if (residente == null)
            {
                throw new Exception("Residente no Existe");
            }
            AreaComun areacomun = areacomunDAO.OptenerAreaComun(data.AreaComun);
            if (areacomun==null)
            {
                throw new Exception("Error.!!!!!! ingrese Codigo de AreaComun ");
            }
            if (data.NuPersonas==0 && data.NoResponsable.Equals(""))
            {
                throw new Exception("Ingrese numero de personas!");
            }
            SeparacionAreaComun separacion = separacionareacomunDAO.ObtenerSeparacionAreaComunConAreaComunYFecha(data.AreaComun.CoAreaComun,data.FeSeparacion);
            if (separacion != null)
                throw new Exception("Esta Area comun ya esta separada para esta fecha");
            SeparacionAreaComun separacionResidente = separacionareacomunDAO .ObtenerSeparacionAreaComunConResidenteYFecha(data.Residente.CoResidente, data.FeSeparacion);
            if (separacion != null)
                throw new Exception("El residente ya tiene separada una area comun para esta fecha");
            return separacionareacomunDAO.InsertSeparacionAreaComun(data);
        }
        public ICollection<SeparacionAreaComun> ListarReservas(String fechaSeparacion)
        {
            
            return separacionareacomunDAO.ListarSeparacionAreaComun(fechaSeparacion);
        }

        public SeparacionAreaComun ModificarSeparacionAreaComun(SeparacionAreaComun data)
        {

            SeparacionAreaComun m = separacionareacomunDAO.ObtenerSeparacionAreaComun(data.CoSeparacion);
            if (m == null)
            {
                throw new Exception("Error.!!!!!! No existe Separacion de area Comun ");
            }
            if (data.NuPersonas == 0 && data.NoResponsable.Equals(""))
            {
                throw new Exception("Ingrese numero de personas!");
            }

          

            return separacionareacomunDAO.ModificarSeparacionAreaComun(data);
        }

        public SeparacionAreaComun ObtenerSeparacionAreaComun(int codigo)
        {
            return separacionareacomunDAO.ObtenerSeparacionAreaComun(codigo);
        }

        public int DeleteSeparacionAreaComun(int codigo)
        {
            return separacionareacomunDAO.DeleteSeparacionAreaComun(codigo);
        }
    }

}